 <?php
	$target_path		= "./temp/";
	$content_type		= "csv";
	if (isset($_POST["content_type"]))
		$content_type = $_POST["content_type"];
		
	// Arrays we'll use later
	$keys = array();
	$newArray = array();
	foreach($_FILES as $name=>$file){ 
		list($file_name, $error) = upload($name, $target_path, "csv,txt,xml");
		if ($error)
			echo $error;
		else{
			switch($content_type){
				case "raw":
					$data = file_get_contents($target_path.$file_name);
					echo $data;
					break;
				default:
					$data = csvToArray($target_path.$file_name, ",", "\"");
					unlink($target_path.$file_name);
					echo json_encode($data);
					break;
			}
		}
	}

// Function to convert CSV into associative array
function csvToArray($file, $delimiter, $text_marker) {
	$arr = array();
	if (($handle = fopen($file, 'r')) !== FALSE) {
		$i = 0;
		while (($lineArray = fgetcsv($handle, 4096, $delimiter, $text_marker)) !== FALSE) {
			array_push($arr, $lineArray);
		}
		fclose($handle);
	}
	return $arr;
} 

/**
 * A function for easily uploading files. This function will automatically generate a new 
 *        file name so that files are not overwritten.
 * Taken From: http://www.bin-co.com/php/scripts/upload_function/
 * Arguments:    $file_id- The name of the input field contianing the file.
 *                $folder    - The folder to which the file should be uploaded to - it must be writable. OPTIONAL
 *                $types    - A list of comma(,) seperated extensions that can be uploaded. If it is empty, anything goes OPTIONAL
 * Returns  : This is somewhat complicated - this function returns an array with two values...
 *                The first element is randomly generated filename to which the file was uploaded to.
 *                The second element is the status - if the upload failed, it will be 'Error : Cannot upload the file 'name.txt'.' or something like that
 */
function upload($file_id, $folder="", $types="") {
	if(!$_FILES[$file_id]['name']) return array('','No file specified');

	$file_title = $_FILES[$file_id]['name'];
	//Get file extension
	$ext_arr = preg_split("/[\.]/",basename($file_title));
	$ext = strtolower($ext_arr[count($ext_arr)-1]); //Get the last extension

	//Not really uniqe - but for all practical reasons, it is
	$uniqer = substr(md5(uniqid(rand(),1)),0,5);
	$file_name = $uniqer . '_' . $file_title;//Get Unique Name

	$all_types = explode(",",strtolower($types));
	if($types) {
		if(in_array($ext,$all_types));
		else {
			$result = "'".$_FILES[$file_id]['name']."' is not a valid file."; //Show error if any.
			return array('',$result);
		}
	}

	//Where the file must be uploaded to
	if($folder) $folder .= '/';//Add a '/' at the end of the folder
	$uploadfile = $folder . $file_name;

	$result = '';
	//Move the file from the stored location to the new location
	if (!move_uploaded_file($_FILES[$file_id]['tmp_name'], $uploadfile)) {
		$result = "Cannot upload the file '".$_FILES[$file_id]['name']."'"; //Show error if any.
		if(!file_exists($folder)) {
			$result .= " : Folder don't exist.";
		} elseif(!is_writable($folder)) {
			$result .= " : Folder not writable.";
		} elseif(!is_writable($uploadfile)) {
			$result .= " : File not writable.";
		}
		$file_name = '';
		
	} else {
		if(!$_FILES[$file_id]['size']) { //Check if the file is made
			@unlink($uploadfile);//Delete the Empty file
			$file_name = '';
			$result = "Empty file found - please use a valid file."; //Show the error message
		} else {
			chmod($uploadfile,0777);//Make it universally writable.
		}
	}

	return array($file_name,$result);
}
?> 
